package com.love.marriage.userRechargeRecordInfo.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * description:  充值层级统计VO
 * author:       AI
 * createDate:   2024-04-27
 * version:      1.0.0
 */
@Getter
@Setter
@Accessors(chain = true)
@Schema(name = "UserRechargeHierarchyVo", description = "充值层级统计VO")
public class UserRechargeHierarchyVo {

    @Schema(description = "用户ID", type = "Long")
    private Long id;

    @Schema(description = "用户名", type = "String")
    private String username;

    @Excel(name = "邀请人编码")
    @Schema(description = "根用户编码", type = "String")
    private String rootCode;

    @Schema(description = "邀请人身份证号", type = "String")
    private String inviteIdCardNumber;

    @Excel(name = "邀请人名称")
    @Schema(description = "邀请人名称", type = "String")
    private String inviteCardName;

    @Excel(name = "被邀请人编码")
    @Schema(description = "用户编码", type = "String")
    private String code;

    @Schema(description = "被邀请人身份证号", type = "String")
    private String idCardNumber;

    @Excel(name = "被邀请人名称")
    @Schema(description = "被邀请人名称", type = "String")
    private String cardName;

    @Schema(description = "层级", type = "Integer")
    private Integer level;

    @Excel(name = "层级")
    @Schema(description = "层级", type = "Integer")
    private String levelName;

    @Schema(description = "根用户ID", type = "Long")
    private Long rootUser;

    @Excel(name = "被邀请人总消费")
    @Schema(description = "被邀请人总消费", type = "BigDecimal")
    private BigDecimal sumAmount;

    @Schema(description = "适用佣金比例", type = "BigDecimal")
    private BigDecimal appliedRate;

    @Excel(name = "佣金总额")
    @Schema(description = "佣金总额(sumAmount*appliedRate)", type = "BigDecimal")
    private BigDecimal totalCommission;

    @Excel(name = "操作时间", format = "YYYY-MM-dd HH:mm:ss")
    @Schema(description = "操作时间", type = "LocalDateTime")
    private LocalDateTime operateTime;
} 